package com.threadLocal的使用案例;

import com.alibaba.ttl.TransmittableThreadLocal;
import com.线程案例.threadLocal.User11;

/**
 * @author: LCG
 * @date: 2022-07-22 23:22:34
 * @description:
 **/
public class UserInfoUtils {
    private static ThreadLocal<User11> threadLocal=new ThreadLocal<>();
    /** 使用InheritableThreadLocal解决主线程中的数据复制到子线程 只适用于new Thread的场景不适合 线程池使用 **/
    private static InheritableThreadLocal<User11> inheritableThreadLocal=new InheritableThreadLocal<>();
    /** 解决 线程池中的线程获取 父线程中的数据，当然了普通的县城也是可以用的 **/
    private static TransmittableThreadLocal<User11> transmittableThreadLocal=new TransmittableThreadLocal<>();

    /**
     * @author: LCG
     * @date: 2022-07-22 23:24:13
     * @description:  封装存入用户信息到 ThreadLocal，在当前线程惹任何位置你都可以取到这个user信息了
     */
    public static void putUserInfo(User11 user11){
        transmittableThreadLocal.set(user11);
    }
    /**
     * @author: LCG
     * @date: 2022-07-22 23:25:10
     * @description: 在当前线程中取出用户的信息
     */
    public static User11 getUserInfo(){
        return  transmittableThreadLocal.get();
    }
    /**
     * @author: LCG
     * @date: 2022-07-22 23:26:37
     * @description:  清除当前线程中存储的数据
     */
    public static void remove(){
        transmittableThreadLocal.remove();
    }


}
